package com.aizuda.boot.modules.third.wps.controller;

import com.aizuda.boot.modules.third.wps.domain.vo.FileDownloadVo;
import com.aizuda.boot.modules.third.wps.domain.vo.FileInfoVo;
import com.aizuda.boot.modules.third.wps.domain.vo.ResponseDTO;
import com.aizuda.boot.modules.third.wps.service.ExtendCapacityService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author hjw
 * @description WebOffice扩展功能接口
 * @date 2025年06月19日 15:37
 */
@Tag(name = "WebOffice扩展功能接口", description = "WebOffice扩展功能接口")
@RestController
@RequestMapping("third/wps/v3/3rd/files")
public class ExtendCapacityController {

    @Autowired
    private ExtendCapacityService extendCapacityService;

    /**
     * 文档历史版本列表
     *
     * @param fileId 文件id
     * @param offset 偏移量
     * @param limit  限制数量 <br>
     *               <a href = "https://solution.wps.cn/docs/callback/extend.html#文档历史版本列表">-详见官方文档-</a>
     */
    @Operation(summary = "文档历史版本列表", description = "获取指定文档的历史版本列表")
    @GetMapping("/{file_id}/versions")
    public ResponseDTO<List<FileInfoVo>> fileVersions(@PathVariable("file_id") String fileId,
                                                      @RequestParam(value = "offset", required = false, defaultValue = "0") int offset,
                                                      @RequestParam(value = "limit", required = false, defaultValue = "100") int limit) {

        return ResponseDTO.success(extendCapacityService.fileVersions(fileId, offset, limit));
    }


    /**
     * 获取文档指定历史版本
     *
     * @param fileId  文件id
     * @param version 版本号 <br>
     *                <a href = "https://solution.wps.cn/docs/callback/extend.html#获取文档指定历史版本">-详见官方文档-</a>
     */
    @Operation(summary = "获取文档指定历史版本", description = "获取指定文档的某个历史版本的详细信息")
    @GetMapping("/{file_id}/versions/{version}")
    public ResponseDTO<FileInfoVo> fileVersion(@PathVariable("file_id") String fileId,
                                               @PathVariable("version") String version) {

        return ResponseDTO.success(extendCapacityService.fileVersion(fileId, version));
    }

    /**
     * 获取历史版本下载信息
     *
     * @param fileId  文件id
     * @param version 版本号 <br>
     *                <a href = "https://solution.wps.cn/docs/callback/extend.html#获取历史版本下载信息">-详见官方文档-</a>
     */
    @Operation(summary = "获取历史版本下载信息", description = "获取指定文档的某个历史版本的下载信息")
    @GetMapping("/{file_id}/versions/{version}/download")
    public ResponseDTO<FileDownloadVo> fileVersionDownload(@PathVariable("file_id") String fileId,
                                                           @PathVariable("version") String version) {

        return ResponseDTO.success(extendCapacityService.fileVersionDownload(fileId, version));
    }

}
